package com.xln.demo5抽象;

/**
 * 抽象学生基类：包含学号、姓名、性别，定义写作文模板方法与抽象内容方法。
 */
public abstract class Student {
    private String xuehao;
    private String name;
    private String sex;

    /** 无参构造 */
    public Student() {
    }

    /** 全参构造 */
    public Student(String xuehao, String name, String sex) {
        this.xuehao = xuehao;
        this.name = name;
        this.sex = sex;
    }

    /** 获取学号 */
    public String getXuehao() {
        return xuehao;
    }

    /** 设置学号 */
    public void setXuehao(String xuehao) {
        this.xuehao = xuehao;
    }

    /** 获取姓名 */
    public String getName() {
        return name;
    }

    /** 设置姓名 */
    public void setName(String name) {
        this.name = name;
    }

    /** 获取性别 */
    public String getSex() {
        return sex;
    }

    /** 设置性别 */
    public void setSex(String sex) {
        this.sex = sex;
    }
    /**
     * 模板方法：统一作文打印结构，调用子类 userwrite 填充具体内容。
     * @param grade 年级
     */
    public void write(Integer grade){
        System.out.printf("=============我的梦想===============\n");
        System.out.printf("=====第八届全国中小学生新概念作文比赛====");
        userwrite(grade);
        System.out.printf("========完成时间2023-1-20日==========\n");
    }
    /**
     * 抽象方法：由子类按年级输出作文内容。
     */
    public abstract void userwrite(Integer grade);

}
